Page({
    data: {
      hotRecipes: [],        // 热门推荐数据
      recommendRecipes: [],  // 已展示的推荐数据
      allRecommendData: [],  // 存储从后端获取的所有推荐数据(20条)
      showMore: true,        // 是否显示“加载更多”按钮
      showEndText: false,    // 是否显示“到底了”文本
      currentPage: 1,        // 当前展示页码
      pageSize: 8,           // 每页展示8条
      isLoading: false,      // 加载状态锁
      loadError: false       
    },
  
    onLoad() {
      // 页面加载时获取热门推荐和所有推荐数据
      this.fetchHotRecipes();
      this.fetchAllRecommendData();
    },
  
    // 处理封面图路径
    getCoverImage(images) {
      const defaultImg = '/images/default-recipe.png';
      if (!images || images.length === 0) return defaultImg;
      
      const coverImg = images.find(img => img.description === '封面图');
      return coverImg 
        ? `https://gzq123.oss-cn-beijing.aliyuncs.com/${coverImg.imgUrl}`
        : `https://gzq123.oss-cn-beijing.aliyuncs.com/${images[0].imgUrl}`;
    },
  
    // 获取热门推荐数据
    fetchHotRecipes() {
      let token = '';
      try {
        token = wx.getStorageSync('token');
      } catch (e) {
        console.error('获取token失败：', e);
      }
  
      this.setData({ isLoading: true, loadError: false });
      wx.request({
        url: 'http://localhost:8080/course/courses/Host',
        method: 'GET',
        header: { 'Authorization': token },
        success: (res) => {
          if (res.statusCode === 200 && res.data.code === 200) {
            const hotData = res.data.rows.map(item => ({
              id: item.id,
              image: this.getCoverImage(item.images),
              isMemberFree: true,
              participant: item.participantCount,
              // 直接使用 item.users.nickname，若不存在则用 '未知作者'（可根据实际需求调整兜底逻辑）
              author: item.users?.nickname || '未知作者', 
              title: item.title,
              score: item.score
            }));
            this.setData({ hotRecipes: hotData });
          } else {
            this.setData({ loadError: true });
            console.error('热门推荐接口异常：', res);
          }
        },
        fail: (err) => {
          this.setData({ loadError: true });
          console.error('热门推荐请求失败：', err);
        },
        complete: () => {
          this.setData({ isLoading: false });
        }
      });
    },
  
    // 一次获取所有推荐数据(20条)
    fetchAllRecommendData() {
      let token = '';
      try {
        token = wx.getStorageSync('token');
      } catch (e) {
        console.error('获取token失败：', e);
      }
  
      this.setData({ isLoading: true, loadError: false });
      wx.request({
        url: 'http://localhost:8080/course/courses/Detail',
        method: 'GET',
        header: { 'Authorization': token },
        data: {
          pageNum: 1,
          pageSize: 20  // 确保获取20条数据
        },
        success: (res) => {
          if (res.statusCode === 200 && res.data.code === 200) {
            // 处理所有20条数据并存储
            const allData = res.data.rows.map(item => ({
              id: item.id,
              image: this.getCoverImage(item.images),
              isMemberFree: Math.random() > 0.5,
              participant: item.participantCount,
              // 同样直接使用 item.users.nickname
              author: item.users?.nickname || '未知作者', 
              title: item.title,
              score: item.score,
              createTime: item.createTime,
              index: res.data.rows.indexOf(item) // 记录原始索引（0-19）
            }));
  
            this.setData({
              allRecommendData: allData,
            }, () => {
              // 初始化显示第一页(0-7条)
              this.loadPage(1);
            });
          } else {
            this.setData({ loadError: true });
            console.error('推荐数据接口异常：', res);
          }
        },
        fail: (err) => {
          this.setData({ loadError: true });
          console.error('推荐数据请求失败：', err);
        },
        complete: () => {
          this.setData({ isLoading: false });
        }
      });
    },
  
    // 加载指定页的数据（核心分页逻辑）
    loadPage(pageNum) {
      const startIndex = (pageNum - 1) * this.data.pageSize;
      const endIndex = startIndex + this.data.pageSize;
      const currentPageData = this.data.allRecommendData.slice(startIndex, endIndex);
      
      this.setData({
        recommendRecipes: [...this.data.recommendRecipes, ...currentPageData],
        currentPage: pageNum
      });
      const totalDataCount = this.data.allRecommendData.length; 
      const hasMore = endIndex < totalDataCount; 
      
      // 更新底部状态
      this.setData({
        showMore: hasMore,       // 有更多数据则显示“加载更多”
        showEndText: !hasMore    // 无更多数据则显示“到底了”
      });
    },
  
    // 加载更多（关键：方法名与WXML绑定一致）
    loadMore() {
      // 防止重复加载或已无更多数据
      if (this.data.isLoading || !this.data.showMore) return;
      
      this.setData({ isLoading: true });
      
      // 模拟网络延迟（500ms）
      setTimeout(() => {
        const nextPage = this.data.currentPage + 1;
        this.loadPage(nextPage);
        this.setData({ isLoading: false });
      }, 500);
    },
  
    // 跳转到详情页
    goToDetail(e) {
      const recipeId = e.currentTarget.dataset.id;
      wx.navigateTo({
        url: `/video/pages/recipesDetails/recipesDetails?id=${recipeId}`
      });
    },
  
    goToSearchPage() {
      wx.navigateTo({
        url: '/video/pages/recipesSelect/recipesSelect'
      });
    },
  
    goToSearchPageWithInput(e) {
      const keyword = e.detail.value.trim();
      wx.navigateTo({
        url: `/video/pages/recipesSelect/recipesSelect?keyword=${encodeURIComponent(keyword)}`
      });
    },
  
    // 重新加载数据（错误状态时使用）
    reloadData() {
      this.setData({ 
        recommendRecipes: [],
        currentPage: 1,
        showMore: true,
        showEndText: false,
        loadError: false
      }, () => {
        this.fetchAllRecommendData();
      });
    }
  });